package cn.edu.wynu.d8_interface2;
/*
使用接口的好处(重点)：
1、弥补了类单继承的不足，一个类同时可以实现多个接口。
2、让程序可以面向接口编程，这样程序员就可以灵活方便的切换各种业务实现
*/

import cn.edu.wynu.d5_abstract2.Animal;
import cn.edu.wynu.d5_abstract2.Dog;

public class Test {
    public static void main(String[] args) {
        // 掌握使用接口的好处，弥补了单继承的不足
        Student s = new A(); // 此时A对象可以当作Student对象使用
        // A类实现了Driver和Singer接口，所以A类可以当作Driver和Singer使用，A类同时实现了这两个接口
        Singer s2 = new A(); // 此时A对象可以当作Singer对象使用
        s2.sing();
        Driver s3 = new A(); // 此时A对象可以当作Driver对象使用
        s3.drive();

        // 面向接口编程，灵活方便的切换各种业务实现
        Driver d = new A();
        d.drive();

        Animal a = new Dog();
        a.cry();
    }
}

class B implements Driver{
    @Override
    public void drive() {

    }
}

class A extends Student implements Driver, Singer{
    @Override
    public void drive() {

    }

    @Override
    public void sing() {

    } // A类继承了Student类

}

class Student {

}

interface Driver{
    void drive();

}

interface Singer{
    void sing();

}

/*
1、使用接口有啥好处，第一个好处是什么?
可以解决类单继承的问题，通过接口，我们可以让一个类有一个亲爹的同时，还可以找多个干爹去扩展自己的功能。
2、为什么我们要通过接口，也就是去找干爹，来扩展自己的功能呢?
因为通过接口去找干爹，别人通过你implements的接口，就可以显性的知道你是谁，从而也就可以放心的把你当作谁来用了。
3、使用接口的第二个好处是什么?
一个类我们说可以实现多个接口，同样，一个接口也可以被多个类实现的。
这样做的好处是我们的程序就可以面向接口编程了，这样我们程序员就可以很方便的灵活切换各种业务实现了。
*/
